package vistas;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import java.awt.Color;

import java.awt.GridLayout;

import Iview.IFormGestionRemota;
import Iview.IFormTerminalEstudiante;

import javax.swing.JOptionPane;

import java.awt.ComponentOrientation;
import java.awt.Cursor;

import javax.swing.border.MatteBorder;

import java.awt.BorderLayout;
import java.util.HashMap;

public class FormGestionRemota extends JFrame implements IFormGestionRemota {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JPanel panelTerminales;
	private HashMap<String, IFormTerminalEstudiante> terminales;

	/**
	 * Create the frame.
	 */
	public FormGestionRemota() {
		terminales = new HashMap<String, IFormTerminalEstudiante>();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 1139, 772);
		setExtendedState(JFrame.MAXIMIZED_BOTH);
		contentPane = new JPanel();
		contentPane.setBackground(Color.WHITE);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(new BorderLayout(0, 0));

		panelTerminales = new JPanel();
		panelTerminales.setBorder(new MatteBorder(1, 1, 1, 1,
				(Color) new Color(0, 0, 0)));
		panelTerminales.setBackground(Color.WHITE);
		panelTerminales.setCursor(Cursor
				.getPredefinedCursor(Cursor.HAND_CURSOR));
		panelTerminales
				.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
		panelTerminales.setAutoscrolls(true);
		contentPane.add(panelTerminales);
		panelTerminales.setLayout(new GridLayout(4, 4, 0, 0));

	}

	@Override
	public void setTerminal(IFormTerminalEstudiante terminal) {
		terminales.put(terminal.getIP(), terminal);
		panelTerminales.add((JPanel) terminal);
		panelTerminales.updateUI();
	}

	@Override
	public void mostrarMensaje(int tipo, String mensaje) {
		switch (tipo) {
		case 1:// mensaje de error
			JOptionPane.showMessageDialog(null, mensaje, "Error",
					JOptionPane.ERROR_MESSAGE);
			break;
		case 2:// mensaje de informacion
			JOptionPane.showMessageDialog(null, mensaje, "Informacion",
					JOptionPane.INFORMATION_MESSAGE);
			break;
		}
	}

	@Override
	public Boolean solicitarAutorizacion(String ip) {
		Boolean respuesta = JOptionPane
				.showConfirmDialog(
						null,
						"El estudiante "
								+ terminales.get(ip).getNombre()
								+ " solicita compartir pantalla, desea aceptar la petición",
						"Autorización de compartir pantalla",
						JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION;
		if(respuesta) {
			terminales.get(ip).habilitarComparirPantalla(false);
		}
		return respuesta;
	}
}
